This page last changed on Sep 24, 2006 by scytacki.

XPCOM stands for cross platform component object model. It is the framework used by mozilla/firefox for extending and providing services to the browser and web applications. It has bindings for most of the popular languagues : Java, Mono(C#), Python, Ruby, C++.

Because it is cross language and cross platform it is a good framework to build other frameworks ontop of. In that way the resulting framework can be extended with components written in practically any languague. Additionally it means that existing mozilla plugins could be used. In the same way that Java applets can be embedded directly into Java applications. Mozilla plugins could be embedded directly in XPCOM aware applications.

At some level it has a lot of similarities to soap web services. Both include interface files that describe the interfaces provided by and implemented by components. The implementation can be written in any of the languagues that have bindings. These components can ask the framework for services that could be implemented in another languague.
The difference with XPCOM is that the service could be implemented as a local shared library. The XPCOM implementation could also be a proxy to a soap webservice.

It can also be compared with OSGi. Because OSGi mainly used with Java the interfaces are used. To identify services OSGi generally uses the package name of the interface the service implements. In XPCOM an UUID is used. OSGi is particulary good at handling dependencies between bundles (component implementations). Mozilla plugins appear to have some form of dependency resolution. It isn't clear if this is available at the XPCOM level.

Applications built on XPCOM

  • Mozilla/Firefox
  • Komodo - proprietary IDE licensed by ActiveState

Links

Document generated by Confluence on Jan 27, 2014 16:56